$(function(){
	var circles = [];//页面进度条集合
	var drgsTotalCount = 0;//DRGs总组数
	var groupVerDesc='';
	var setIntervalId;
	//页面进度条随机分配颜色组合
	var colors = [
			['#D3B6C6', '#4B253A'], ['#FCE6A4', '#EFB917'], ['#BEE3F7', '#45AEEA'], ['#F8F9B6', '#D2D558'], ['#F4BCBF', '#D43A43']
		];
	//进度条颜色组合随机排序
	function shuffle(o){
		for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		return o;
	}
	//加载日期
	$("#"+tabId+" #outFrom_date").datetimepicker({
		format : "yyyy-mm-dd",
		autoclose : true,
		todayBtn : true,
		minView : 2,
		language : 'zh-CN'
	});
	$("#"+tabId+" #outTo_date").datetimepicker({
		format : "yyyy-mm-dd",
		autoclose : true,
		todayBtn : true,
		minView : 2,
		language : 'zh-CN'
	});
	
	//获取DRGs组数与分组版本描述
	$.post(contextPath+"/drgServiceGroup/getDRGsCountByVerCode.dhc").done(function(result){
		drgsTotalCount = result.data.drgsTotalCount;	
		groupVerDesc = result.data.drgVersionDesc;
	});
	//增加进度条宽度
	$('#add_width_button').on('click', function(){
		$.each(circles, function(i, n){
			n.updateWidth(n._strokeWidth + 10);
		});
	});
	
	//减小进度条宽度
	$('#substract_width_button').on('click', function(){  		
		$.each(circles, function(i, n){
			n.updateWidth(n._strokeWidth - 10);
		});
	});

	//随机分配进度条颜色
	$('#colors_button').on('click', function(){ 
		colors = shuffle(colors);		
		$.each(circles, function(i, n){
			n.updateColors(colors[i]);
		});
	});
	
	/**
	 * 分组结果展示鼠标焦点事件
	 * 不论鼠标指针离开被选元素还是任何子元素，都会触发 mouseout 事件。
	 * 只有在鼠标指针离开被选元素时，才会触发 mouseleave 事件。
	 */
	$("#"+tabId+" .groupResultBox li").mouseenter(function(){
		$(this).children("p").animate({
			"height":"40px"
		},500);
		$(this).children("span").animate({
			"height":"100px"
		},500);
		$(this).children("div:even").animate({
			"width":"100%"
		},500).css("background","#02b3bf");
		$(this).children("div:odd").animate({
			"height":"100%"
		},500).css("background","#02b3bf");
	});

	//
	$("#"+tabId+" .groupResultBox li").mouseleave(function(){
		$(this).children("p").animate({
			"height":"0px"
		});
		$(this).children("div:even").animate({
			"width":"0%"
		},500).css("background","#02b3bf");
		$(this).children("div:odd").animate({
			"height":"0%"
		},500).css("background","#02b3bf");
	});

	//开始分组
	$("#"+tabId+" #drgServiceGroupStart").on('click', function(){  
		var dateFrom = $("#"+tabId+" #outFrom_date").val();
		var dateTo = $("#"+tabId+" #outTo_date").val();
		var dateType= $("#"+tabId+" #date_type").val();
		/**
		 * 日期验证
		 */
		//校验是否填写
		if(dateFrom =='' || dateTo ==''){
			drgUI.warning("请选择日期") ;
			return;
		}
		//比较大小
		if(new Date(dateFrom)>new Date(dateTo)){
			drgUI.error("开始日期不能大于结束日期") ;
			return;
		};
								
		drgUI.confirm({
			content : '确定使用'+groupVerDesc+'分组器分组吗?',
			callSure : function() {
				$("#"+tabId+" #drgServiceGroupStart").attr({"disabled":"disabled"});//按钮为禁用
			
				//获取病例总数
				$.post(contextPath+"/drgServiceGroup/getMrCount.dhc",
						{
						dateFrom: dateFrom,
						dateTo: dateTo,
						dateType:dateType
					}).done(function(result){
					var cnObj = result.data;
					var totalMrCount = cnObj[0];//总病例数
					var gt60Count = cnObj[1];//大于60天病例数
					var drgGroupCount = totalMrCount-gt60Count;//分组病例数
					var drgGroupInCount = 0;//入组病例数
					//所选时间范围内有病例数据
					if(totalMrCount > 0){
						//页面显示加载数据，后台查询数据
						$("#"+tabId+" #groupClock").fadeOut("slow");//计时器div淡出效果
						$("#"+tabId+" #canvas").fadeOut("slow");//进度条div淡出效果
						$("#"+tabId+" #groupResult").fadeOut("slow");//分组结果div淡出效果
						//数据组装及分组
						$.post(contextPath+"/drgServiceGroup/drgGroupOfMrData.dhc",
								{
								 dateFrom: dateFrom, 
								 dateTo: dateTo,
								 dateType:dateType
							
								}).done(function(result){
							pauseStopwatch();//暂停计时
							clearInterval(setIntervalId);//停止定时请求进度任务
							drgUI.bindAjaxStart(1);
							$("#"+tabId+" #drgServiceGroupStart").removeAttr("disabled");//将分组按钮可用
							//判断后台是否有错误
							if(result.hasErrors){
								drgUI.error(result.errorMessage) ;
								resetStopwatch();//计时器重置
							}else{
								var cbData = result.data;
								var mrGt60CountCurr = cbData.mrGt60CountCurr;//获取当前大于60天病例数
								var mrAssembleCountCurr = cbData.mrAssembleCountCurr;//获取当前多线程组装病例数
								var mrGroupCount = cbData.mrGroupCount;//获取当前已经分组病例数
								var notInCaseCnt = cbData.notInCaseCnt;//获取当前未入组病例数
								var drgCountCurr = cbData.drgCountCurr;////获取当前已经分到的DRGs组数
								var groupErrorCaseCnt=cbData.groupErrorCaseCnt;//分组报错病例数
								circles[0].update(mrAssembleCountCurr, 300);
								circles[1].update(mrGroupCount, 400);
								if(drgsTotalCount > 0){
									circles[2].update(drgCountCurr, 400);
								}
								/**
								 * 展示分组结果
								 */
								$("#"+tabId+" .groupResultBox li span ").empty();//清空所有分组结果
								
								$("#"+tabId+" #groupResult").fadeIn("slow");//进度条div淡入效果
								
								$("#"+tabId+" #mrTotalCount").text(totalMrCount);//全部病例数赋值
								$("#"+tabId+" #mrGt60Count").text(mrGt60CountCurr);//大于60天病例数赋值
								var tempInCaseCnt=mrGroupCount-groupErrorCaseCnt-notInCaseCnt;
								$("#"+tabId+" #mrCountInDRGs").text(tempInCaseCnt);//入组病例数赋值
								$("#"+tabId+" #mrCountInDRGsRatio").text(GetPercent(tempInCaseCnt,mrGroupCount));//入组率
								$("#"+tabId+" #mrCountNotInDRGs").text(notInCaseCnt);//未入组病例数赋值
								$("#"+tabId+" #DRGsVersion").text(groupErrorCaseCnt);//分组错误病例数

								$("#"+tabId+" .groupResultBox li").children("span").animate({
									"height":"100px"
								},1000);
								$.post(contextPath+"/ClearCache/clearCache.dhc").done(function(result){
									drgUI.success("分组完毕，并清除系统缓存！") ;
								});
							}
						});
						$("#"+tabId+" #canvas").fadeIn("slow");//进度条div淡入效果
						$("#"+tabId+" #groupClock").fadeIn("slow");//计时器div淡入效果
						circles.length = 0;//进度圆环数组清空
						//初始化数据组装进度条
						circles.push(Circles.create({
							id:         "loadMrProgress",
							value:		0,
							maxValue:	totalMrCount,
							radius:     60,
							width:      10,
							colors:     colors[0]
						}));
						
						//初始化数据分组进度条
						circles.push(Circles.create({
							id:         "MrGroupProgress",
							value:		0,
							maxValue:	drgGroupCount,
							radius:     60,
							width:      10,
							colors:     colors[1]
						}));
													
						//初始化DRGs组数进度条
						circles.push(Circles.create({
							id:         "DRGsCountProgress",
							value:		0,
							maxValue:	drgsTotalCount,
							radius:     60,
							width:      10,
							colors:     colors[2]
						}));
						//计时器重置
						resetStopwatch();
						//开始计时
						startStopwatch();
						drgUI.bindAjaxStart(0) ;
						//获取进度
						var setIntervalId  = setInterval(function(){
							$.post(contextPath+"/drgServiceGroup/loadProgress.dhc").done(function(result){
								var cbData = result.data;
								var mrGt60CountCurr = cbData.mrGt60CountCurr;//获取当前大于60天病例数
								var mrAssembleCountCurr = cbData.mrAssembleCountCurr;//获取当前多线程组装病例数
								var mrGroupCount = cbData.mrGroupCount;//获取当前已经分组病例数
								var notInCaseCnt = cbData.notInCaseCnt;//获取当前未入组病例数
								var drgCountCurr = cbData.drgCountCurr;////获取当前已经分到的DRGs组数
								var groupErrorCaseCnt=cbData.groupErrorCaseCnt;//分组报错病例数
								//加载首页组装进度条
								circles[0].update(mrAssembleCountCurr, 300);
								//加载分组进度条
								circles[1].update(mrGroupCount, 400);
								if(drgsTotalCount > 0){
									//加载DRGs组数进度条
									circles[2].update(drgCountCurr, 400);
								}
							});
						}, 800);			
			}else{
				drgUI.warning("选择的日期范围内没有病例数据") ;
				$("#"+tabId+" #drgServiceGroupStart").removeAttr("disabled");//将分组按钮可用
					return;
				}
			});
		}
	});
});  
	
	//计算两个整数的百分比值 
	function GetPercent(num, total) { 
		num = parseFloat(num); 
		total = parseFloat(total); 
		if (isNaN(num) || isNaN(total)) { 
		return "-"; 
		} 
		return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00 + "%"); 
	}
});
